import DataTable from '@/components/DataTable'
import { getDistinct } from '@/types/request';
import { PermissionField } from '@/types/structs';
import { post } from '@/useHttp';
import { ModalForm, ProColumns, ProFormSelect } from '@ant-design/pro-components';
import { Button, notification, Space } from 'antd';
import React from 'react'

const Permission: React.FC = () => {
  const url = '/api/Permission'; // 增删改查接口
  type T = PermissionField; // 数据类型
  // 列定义
  const columns: ProColumns<T>[] = [
    {
      title: '应用',
      key: 'App',
      dataIndex: 'App',
      valueType: 'select',
      // 取 application 并读取 Name 作为 ids 返回
      request: () => getDistinct('Application', 'name', 'displayName'),
    },
    {
      title: 'URL',
      key: 'URL',
      dataIndex: 'URL',
      valueType: 'text',
    },
    {
      title: '操作',
      key: 'Action',
      dataIndex: 'Action',
      valueType: 'text',
    },
    {
      title: '备注',
      key: 'Remark',
      dataIndex: 'Remark',
      valueType: 'text',
    },
    {
      title: '插入时间',
      key: 'InsertTime',
      dataIndex: 'InsertTime',
      valueType: 'dateTime',
      editable: false,
      search: false,
    },
    {
      title: '更新时间',
      key: 'UpdateTime',
      dataIndex: 'UpdateTime',
      valueType: 'dateTime',
      editable: false,
      search: false,
    }
  ]

  return (
    <>
      <DataTable
        url={url}
        columns={columns}
        rowKey={'UUID'}
        usePostGET={true}
      // extractAction={(_, entity, index, action): React.ReactNode[] => {
      //   return [
      //     <a key={index} >
      //       <ModalForm title="关联角色到策略" trigger={<Button type={'primary'} >关联</Button>}
      //         onFinish={async (values) => {
      //           const { success } = await post<{ success: boolean }>('/api/Policy',
      //             { role: values.role, permissionID: [entity.UUID] })
      //           if (success) {
      //             notification.success({ message: '添加成功' })
      //             action.reload();
      //           }
      //           return true
      //         }}
      //       >
      //         <ProFormSelect name="role" label="角色" request={() => getDistinct('Role', 'name', 'displayName')} />
      //       </ModalForm>
      //     </a>
      //   ]
      // }}
      // hideAction={true} // 隐藏操作列
      // hideActionDel={true} // 隐藏操作列中的删除按钮
      // showSearchBox={false} // 隐藏搜索框
      // hideToolbar={true} // 隐藏工具栏(新增,刷新)
      // hidePagination={true} // 隐藏底部分页项
      />
    </>
  )
}

export default Permission